package ysq.xyg.sys.service.impl;

import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;
import ysq.xyg.base.model.dto.ReturnEntity;
import ysq.xyg.base.util.BaseUtil;
import ysq.xyg.sys.dao.SysGeneratorDao;
import ysq.xyg.sys.model.vo.SysColumnVo;
import ysq.xyg.sys.model.vo.SysTableVo;
import ysq.xyg.sys.service.SysGeneratorService;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;


/**
 * 系统部分-代码生成service实现
 *
 * @author shengQiang yu
 * @date 2018-03-18 15:42
 */
@Service("sysGeneratorService")
public class SysGeneratorServiceImpl implements SysGeneratorService {

    @Resource
    private SysGeneratorDao sysGeneratorDao;


    /**
     * 分页查询
     *
     * @param sysTableVo 对象
     * @param pageSize 展示数量
     * @param pageNum 当前页面
     * @return ReturnEntity 对象
     * @author shengQiang yu
     * @date 2018-03-18 16:26
     */
    public ReturnEntity page(SysTableVo sysTableVo, int pageSize, int pageNum) {
        PageHelper.startPage(pageNum,pageSize);
        PageHelper.orderBy(" table_name desc");
        PageInfo<SysTableVo> page=new PageInfo<SysTableVo>(sysGeneratorDao.listTables(sysTableVo));
        return new ReturnEntity(page.getList(),page.getTotal(),page.isHasNextPage());
    }

    /**
     * 根据表名获取表信息
     *
     * @param tableName 表名称
     * @author shengQiang yu
     * @date 2019-03-18 16:20
     */
    public SysTableVo selectByTableName(String tableName) {
        return sysGeneratorDao.selectByTableName(tableName);
    }
    /**
     * 根据表名获取表字段信息(除去通用字段）
     *
     * @param tableName 表名称
     * @param noColums 不需要字段
     * @author shengQiang yu
     * @date 2019-03-18 16:20
     */
    public List<SysColumnVo> listUseColumnsByTableName(String tableName,String noColums) {
        List<SysColumnVo> list=sysGeneratorDao.listColumnsByTableName(tableName);
        List<SysColumnVo> resultList=new ArrayList<SysColumnVo>();
        for (SysColumnVo sysColumnVo:list){
            if(StrUtil.isNotEmpty(noColums)&&noColums.indexOf(sysColumnVo.getColumnName())>-1){
                continue;
            }
            sysColumnVo.setColumnName(BaseUtil.toTfmm(sysColumnVo.getColumnName()));
            resultList.add(sysColumnVo);
        }
        return resultList;
    }
    /**
     * 根据表名获取表字段信息
     *
     * @param tableName 表名称
     * @author shengQiang yu
     * @date 2019-03-18 16:20
     */
    public List<SysColumnVo> listColumnsByTableName(String tableName) {
        return sysGeneratorDao.listColumnsByTableName(tableName);
    }
}
